<?php if (!defined('INDEX')) { trigger_error("Index is not defined!", E_USER_ERROR); exit(); }
/**
 * Класс предоставляет api для экспорта и импорта закладок в формате NETSCAPE-Bookmark-file-1
 * @see http://msdn.microsoft.com/en-us/library/aa753582(VS.85).aspx
 *
 * @package      habrabookmarks
 *
 * @author       Max Kamashev <max.kamashev@floscoeli.com>
 * @copyright    floscoeli.com ©2009
 * @license      http://opensource.org/licenses/gpl-3.0.html
 * @version      SVN: $Id: html_file.service.php 29 2009-03-18 06:55:55Z M.Kamashev $
 *
 * settings:     ts: 4 spaces, eof: lf (unix), codepage: UTF-8
 */
class html_file extends Service {

    /**
     * @see services/Service#export
     */
    public $export = TRUE;

    /**
     * @see services/Service#import
     */
    public $import = FALSE;

    /**
     * @see services/Service#description()
     */
    public function description() {
        return "Экспорт и импорт в файл формата Netscape Bookmark. Этот формат, совместим с большинством браузеров и сервисов социальных закладок.";
    }

    /**
     * @see services/Service#help()
     */
    public function help() {
        return "";
    }

    /**
     * @see services/Service#exportBookmarks()
     */
    public function exportBookmarks($bookmarks) {
        $file = '<!DOCTYPE NETSCAPE-Bookmark-file-1>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<!-- This is an automatically generated file.
It will be read and overwritten.
Do Not Edit! -->
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>';
        foreach ($bookmarks as $var) {
            $file .= "<DT><A HREF=\"{$var['link']}\" LAST_VISIT=\"\" ADD_DATE=\"{$var['date']}\" TAGS=\"".implode(",", $var['tags'])."\">".addslashes(strip_tags($var['header']))."</A>";
            $file .= "<DD>".htmlspecialchars($var['descr']);
        }
        $file.= "</DL><p><!-- ". URL . " " . date("l dS of F Y h:i:s A") ." -->";

        // Отдаём браузеру страничку для скачивания. На этом у нас заканчивается обработка
        header('Content-type: text/html');
        header('Content-Disposition: attachment; filename="habrabookmarks.htm"');
        die($file);
    }

    /**
     * @see services/Service#importBookmarks()
     */
    public function importBookmarks() {
        return FALSE;
    }

    /**
     * @see services/Service#importFormRender()
     */
    public function importFormRender() {
        return FALSE;
    }


    /**
     * @see services/Service#exportFormRender()
     */
    public function exportFormRender() {
        $form = "<form action='' method='post'>
            <input type='hidden' name='service' value='html_file' />
            <input type='hidden' name='type' value='export' />
            <input type='submit' value='Поехали' />
        </form>";

        return $form;
    }

    /**
     * @see services/Service#exportValidate()
     */
    public function exportValidate() {
        //TODO В классе-сервисе не использовать сессию. Лучше создать свою переменную, куда уже закидывать значения. Возможно сделать её параметром метода
        if ( count($_SESSION['bookmarks']) > 0 ) {
            return TRUE;
        } else {
            trigger_error("html_file: Нет закладок для экспорта.", E_USER_NOTICE);
            return FALSE;
        }
    }

    /**
     * @see services/Service#importValidate()
     */
    public function importValidate() {
        return FALSE;
    }

}